home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio / Ham Radio CD-ROM (Emerald Software) (1995).ISO / misc / utilitys / intermod.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  4.1 KB  |  118 lines

  1. 10  PRINT:PRINT:PRINT:PRINT "LIN INTER MOD PROGRAM V1.4 4/17/84"
  2. 12  PRINT:PRINT,"k2uyh --- modified for ibm pc --- wa2tif":PRINT
  3. 15  PI=3.1416
  4. 20  DR=PI/180: REM PRECISION 3
  5. 30  REM DEF FNTM(P)
  6. 40  REM WP=(P-LP)/SP:rem WI=INT(WP): REM IF WP<=0 THEN FNRETURN WP+TM(0)
  7. 50  REM IF WP>=NP THEN FNRETURN TM(NP)+(TM(NP)-TM(NP-1))*(WP-NP)
  8. 60  REM FNEND TM(WI)+(WP-WI)*(TM(WI+1)-TM(WI))
  9. 70  DEF FNTA(P)
  10. 80  REM WP=(P-LP)/SP: rem WI=INT(WP): REM IF WP<=0 THEN FNRETURN TA(0)
  11. 90  REM IF WP>=NP THEN FNRETURN TA(NP)+(TA(NP)-TA(NP-1))*(WP-NP)
  12. 100  REM FNEND TA(WI)+(WP-WI)*(TA(WI+1)-TA(WI))
  13. 110  REM PRINT: REM INPUT "WANT TO READ A FILE (Y/N/END)";Q$: DV=0
  14. 120  REM KILL P,TM,TA
  15. 130  IF Q$="END" THEN END
  16. 140  IF Q$<>"Y" THEN 220
  17. 150  PRINT: INPUT "FILE NAME, DIR OR QUIT"; F$: N$=F$
  18. 160  IF F$="DIR"THEN DIR"*.LIN":GOTO 150 ELSE IF F$="QUIT"THEN 110
  19. 170  F$=F$+".LIN": OPEN#1, "I", F$
  20. 180  READ#1,NP,LP,SP
  21. 190  DIM P(NP),TM(NP),TA(NP)
  22. 200  FOR I=0 TO NP: READ#1,P(I),TM(I),TA(I): NEXT
  23. 210  CLOSE#1: GOTO 351
  24. 220  PRINT: INPUT "MINIMUM INPUT LEVEL IN dB REF SAT"; LP
  25. 230  INPUT "MAXIMUM INPUT LEVEL IN dB REF SAT"; HP
  26. 240  INPUT "POWER STEP IN dB"; SP: NP=(HP-LP)/SP
  27. 250  IF NP<>INT(NP) THEN PRINT: PRINT "INPUT ERROR": GOTO 220
  28. 260  DIM P(NP),TM(NP),TA(NP)
  29. 270  PRINT: FOR I=0 TO NP STEP SP: P(I)=LP+I
  30. 280  PRINT "P in = "; P(I);: INPUT "  POWER OUT MAG & ANG"; TM(I), TA(I): NEXT
  31. 290  REM PRINT: REM INPUT "WANT TO SAVE FILE (Y/N)"; Q$
  32. 300  IF Q$<>"Y" THEN 351
  33. 310  PRINT: INPUT "FILE NAME"; F$: N$=F$: F$=F$+".LIN"
  34. 320  ERASE F$: OPEN#1,"O",F$
  35. 330  WRITE#1,NP,LP,SP
  36. 340  FOR I=0 TO NP: WRITE#1,P(I),TM(I),TA(I): NEXT: CLOSE#1
  37. 350  REM *************** MAIN PROGRAM *************************
  38. 351  PRINT: INPUT "WANT TO CALC POINT OR SWEEP (P/S)"; Q$
  39. 352  IF Q$<>"S" THEN IP=0: PRINT: GOTO 370 ELSE IP=3: H$="N"
  40. 353  REM INPUT "WANT HARD COPY (Y/N)"; H$: rem PRINT: rem IF H$<>"Y" THEN 370
  41. 354  PRINT: PRINT, "  I3/C CHARACTERISTICS FOR "; F$: PRINT: PRINT: GOTO 370
  42. 360  PRINT: INPUT "TWO CARRIER LEVEL IN dB REF SAT"; IP
  43. 362  IF IP>10 THEN 351
  44. 370  M=10:N=2:W=2*PI/M:KE=0:JE=0:UE=0:VE=0:KM=0:JM=0:UM=0:VM=0
  45. 380  VL=10^(IP/10):CE=0:SE=0:CM=0:SM=0:AE=0:BE=0:AM=0:BM=0
  46. 390  FOR I=0 TO M-1: TW=W*I: TN=TW*N
  47. 395  CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
  48. 400  VA=(VL*((1+CW)^2+(SW)^2))/2
  49. 410  IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
  50. 420  AN=ATN(SW/(1+CW+0))
  51. 425  GOSUB 740
  52. 427  GOSUB 800
  53. 430  MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
  54. 440  XM=MF*COS(AF): YM=MF*SIN(AF)
  55. 450  CE=CE+XM*CN: SE=SE+XM*SN
  56. 460  AE=AE+YM*CN: BE=BE+YM*SN
  57. 465  KE=KE+XM*CW: JE=JE+XM*SW
  58. 466  UE=UE+YM*CW: VE=VE+YM*SW: TW=W*(I+1): TN=TW*N
  59. 467  CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
  60. 470  VA=(VL*((1+CW)^2+(SW)^2))/2
  61. 480  IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG10(VA)
  62. 490  AN=ATN(SW/(1+CW))
  63. 495  GOSUB 740
  64. 497  GOSUB 800
  65. 500  MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
  66. 510  XM=MF*COS(AF): YM=MF*SIN(AF)
  67. 520  CM=CM+XM*CN: SM=SM+XM*SN
  68. 530  AM=AM+YM*CN: BM=BM+YM*SN
  69. 535  KM=KM+XM*CW: JM=JM+XM*SW
  70. 536  UM=UM+YM*CW: VM=VM+YM*SW: NEXT
  71. 537  CN=1: CW=1: SN=0: SW=0
  72. 540  VA=(VL*((1+CW)^2+(SW)^2))/2
  73. 550  IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
  74. 560  AN=ATN(SW/(1+CW))
  75. 565  GOSUB 740
  76. 567  GOSUB 800
  77. 570  MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
  78. 580  XM=MF*COS(AF): YM=MF*SIN(AF)
  79. 590  C0=XM*CN: S0=XM*SN
  80. 600  A0=YM*CN: B0=YM*SN
  81. 605  K0=XM*CW: J0=XM*SW
  82. 606  U0=YM*CW: V0=YM*SW: TW=M*W: TN=N*TW
  83. 607  CN=COS(TN): CW=COS(TW): SN=SIN(TN): SW=SIN(TW)
  84. 610  VA=(VL*((1+CW)^2+(SW)^2))/2
  85. 620  IF VA<9.999E-06 THEN MA=-50 ELSE MA=10*LOG(VA)/LOG(10)
  86. 630  AN=ATN(SW/(1+CW))
  87. 635  GOSUB 740
  88. 637  GOSUB 800
  89. 640  MF=10^(FNTM(MA)/20): AF=FNTA(MA)*DR+AN
  90. 650  XM=MF*COS(AF): YM=MF*SIN(AF)
  91. 660  C1=XM*CN: S1=XM*SN
  92. 670  A1=YM*CN: B1=YM*SN
  93. 675  K1=XM*CW: J1=XM*SW
  94. 676  U1=YM*CW: V1=YM*SW
  95. 680  RC=(2*CE+4*CM-C0+C1+2*BE+4*BM-B0+B1)/(3*M)
  96. 690  QC=(-2*SE-4*SM+S0-S1+2*AE+4*AM-A0+A1)/(3*M)
  97. 700  AA=(RC^2+QC^2)/2: IF AA<0 THEN I3=-90 ELSE I3=10*LOG(AA)/LOG(10)
  98. 705  RK=(2*KE+4*KM-K0+K1+2*VE+4*VM-V0+V1)/(3*M)
  99. 706  QK=(-2*JE-4*JM+J0-J1+2*UE+4*UM-U0+U1)/(3*M)
  100. 707  A0=(RK^2+QK^2)/2: IF A0<0 THEN I0=-90 ELSE I0=10*LOG(A0)/LOG(10)
  101. 710  PRINT "INPUT= "IP;TAB(15);"OUTPUT= "I0;TAB(30);"C/I3= "I3-I0" dB"
  102. 712  IF H$<>"Y" THEN 720
  103. 715  PRINT, "INPUT= "IP;TAB(15);"OUTPUT= "I0;TAB(30);"C/I3= "I3-I0" dB"
  104. 720  IF Q$<>"S" THEN 360 ELSE IP=IP-1
  105. 730  IF IP=-21 THEN END ELSE GOTO 370
  106. 740  WP=(P-LP)/SP: WI=INT(WP)
  107. 745  IF WP<=0 GOTO 750 ELSE GOTO 760
  108. 750  DEF FNTM(P)= WP+ TM(0):RETURN
  109. 760  IF WP>=NP GOTO 770 ELSE GOTO 780
  110. 770  DEF FNTM(P)= TM(NP)+ (TM(NP)-TM(NP-1))*(WP-NP):RETURN
  111. 780  DEF FNTM(P)= TM(WI)+ (WP-WI)*(TM(WI-1)-TM(WI)):RETURN
  112. 800  WP=(P-LP)/SP:WI=INT(WP)
  113. 805  IF WP<=0 GOTO 810 ELSE GOTO 820
  114. 810  DEF FNTA(P)= TA(0):RETURN
  115. 820  IF WP>=NP GOTO 830 ELSE GOTO 840
  116. 830  DEF FNTA(P)= TA(NP) +(TA(NP-1))*(WP-NP):RETURN
  117. 840  DEF FNTA(P)= TA(WI)+(WP-WI)*(TA(WI+1)-TA(WI)):RETURN
  118.